package com.itfreer.utils.volley.callback;

import com.itfreer.utils.volley.RequestListener;
import com.itfreer.utils.common.JSONUtils;

import java.lang.reflect.ParameterizedType;

/**
 * 定义数据返回
 */
public abstract class DataCallback<T> implements RequestListener {

    @Override
    public void onRequest() {

    }

    @Override
    public void onSuccess(String s) {
        Class <T> entityClass = (Class <T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        try {
            result((T)JSONUtils.toBean(s, entityClass));
        } catch (Exception e) {
            error(-2,"数据解析错误");
            return ;
        }
    }

    @Override
    public void onError(String s) {
        error(-1,"网络错误");
    }

    /**
     * 返回结果
     * @param t
     */
    public abstract void result(T t);

    /**
     * 返回错误信息
     * @param status
     * @param info
     */
    public abstract void error(int status, String info);

}
